import store from '@/store/index'
import router from '@/router/index'

// 导航守卫
router.beforeEach(async(to, from, next) => {
  // 如果有token，访问的是登录页，就跳到首页
  if (store.state.user.token) {
    if (to.path === '/login') {
      next('/')
    } else {
      // 如果跳转的不是登录页，判断vuex里是否有用户id，没有就先获取用户信息
      if (!store.state.user.userInfo.id) {
        await store.dispatch('user/getuserInfo')

        // 获取动态路由列表
        const res = await store.dispatch('permission/filterRouter', store.state.user.userInfo.menus)
        // 加到路由规则里
        router.addRoutes([...res, { path: '*', redirect: '/404', hidden: true }])
        next(to.path)
      }
      next()
    }
  } else {
    // 如果没有token就看看跳转的是否是白名单里的网址，是就放行，不是就跳登录页
    const whileArr = ['/login', '/404', '/test', '/register']
    if (whileArr.indexOf(to.path) !== -1) {
      next()
    } else {
      next('/login')
    }
  }
})

